package com.app.aop;

import com.app.domain.vo.user.UserVo;
import com.app.exception.BusinessException;
import com.app.framework.utils.CollectionUtils;
import com.app.framework.utils.TokenUtils;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * 接口请求频率限制
 */
@Aspect
@Component
public class ApiRole {

    /**
     * 定义一个切点（通过注解）
     */
    @Pointcut("@annotation(com.app.aop.has.HasRole)")
    public void HasRole() {
    }

    /**
     * Aop切面方法
     */
    @Before("HasRole()")
    public void interceptorDo() {
        //获取登录用户ID
        UserVo userVo = TokenUtils.getRequestUser();
        //检查用户角色
        if (CollectionUtils.isNull(userVo) || userVo.getRole() != 1) {
            throw new BusinessException("权限不足");
        }
    }

}